package controleCliente;

import java.sql.SQLException;
import java.util.Vector;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import com.sun.org.apache.regexp.internal.recompile;

import bean.Estado;
import bean.Tipo;

import clienteQuery.Cliente;
import clienteQuery.ClienteDAO;

import sun.tools.jar.resources.jar;
import view.ClienteJanela;
import view.PanelCliente;
import view.PrincipalJanela;
import erro.Mensagem;
import evento.EventoCliente;

public class ClienteBO {
	
	private static ClienteBO instance = null;
	private final static PanelCliente jPanelCliente = new PanelCliente();
	
	private Cliente pessoa = null;
	private ClienteDAO clienteDAO = null;
	
	public static final int SALVAR_CLIENTE =  1;
	public static final int EDITAR_CLIENTE =  2;
	public static final int EXISTE_NOME =  3;
	public static final int EXISTE_CPF =  4;
	public static final int EXISTE_RG =  5;
	public static final int EXISTE_EMAIL =  6;
	
	public ClienteBO(){
	
		//preencheComboUf();
	}
	
	public static ClienteBO getInstance(){
		if(instance == null){
			instance = new ClienteBO();
			
		}
		return instance;
	}
	
	
	public void criaJanelaCliente(PrincipalJanela janelaPrincipal){
		janelaPrincipal.getContentPane().remove(1);
		janelaPrincipal.getContentPane().add(jPanelCliente); 
		getTiposBuscas();
		setColumnsTable(ClienteDAO.getVectorColuna());
		updateJtable();
		EventoCliente.setEventoCliente(janelaPrincipal);
		janelaPrincipal.validate();
	}

	/*public void criaJanela(){
		
		getJanela().criarJanela(new ModelControleCliente());
		setColumnsTable(ClienteDAO.getVectorColuna());
		updateJtable(ClienteDAO.getinstancia().getListClinte(ClienteDAO.BUSCA_NOME, null, ClienteDAO.ORDER_NOME, 0, 15));
		
		getJanela().escondeColID(0);
		
		EventoCliente.control = this;
		//EventoCliente.addListenersJanelaCliente(getJanela());
		
		preencheComboUf();
		
		//getJanela().pack();
	}*/

	public void setColumnsTable(Vector<String> colunas){
		jPanelCliente.getJTable().setModel(new ModelControleCliente());
		((ModelControleCliente) jPanelCliente.getJTable().getModel()).setDataVector(null, colunas);
		///((ModelControleCliente) jPanelCliente.getJTable().getModel()).setColumnIdentifiers(colunas);
	}
	
	public void updateJtable(){
		Vector<Cliente> dados = null;
		try {
			dados = ClienteDAO.getinstancia().getListClinte(1,"", 1 ,2, 10);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		/*Vector v;
		v = new Vector();
		//jTable1 eh a tabela que eu quero alterar
		DefaultTableModel m = (DefaultTableModel) jTable1.getModel();

		v.add("v1");
		v.add("v2");
		v.add("v3");

		m.addRow(v); */
		ModelControleCliente modelControleCliente = (ModelControleCliente) jPanelCliente.getJTable().getModel();
		modelControleCliente.setVetorClientes(dados);		
		modelControleCliente.addRow(dados);
		
	}
	
	public void getTiposBuscas(){
		
		
		
			DefaultComboBoxModel model = new DefaultComboBoxModel();
		
			

				for(int i = 0; i < ClienteDAO.getinstancia().getBuscaPossivel().size(); i++){
					model.addElement(ClienteDAO.getinstancia().getBuscaPossivel().get(i));
					//System.out.print(ClienteDAO.getinstancia().getEstados());
				}
		
			jPanelCliente.getJListCampoBusca().setModel( model);
			
			


		
		
	}
	
	

	/*
	public boolean setCliente(Cliente cliente, int acao){
		boolean result = false;
	
		
		switch (acao) {
		case SALVAR_CLIENTE:
			try {
					result = ClienteDAO.getinstancia().add(cliente);
				} catch (ClassNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
			break;
			
		case EDITAR_CLIENTE:
			try {
					result = ClienteDAO.getinstancia().editar(cliente);
				} catch (ClassNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
			break;
		}
		
		if(result){
		    Mensagem.mensagem(3, null, null);
			updateJtable(ClienteDAO.getinstancia().getListClinte(ClienteDAO.BUSCA_NOME, null, ClienteDAO.ORDER_NOME, 0, 15));
			return true;
		
		}else{
			Mensagem.mensagem(6, null, null);
			
		}
		return false;
	}
*/
	public void preencheFormParaEdicao(int id){
		try {
			Cliente cliente =ClienteDAO.getinstancia().getClinte(id);
			System.out.print("ID DO CLIENTE "+cliente.getId());
			ClienteFormBO.getInstance().setClienteForm(cliente);
			ClienteFormBO.getInstance().criaJanelaForm();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//System.out.print(cliente.getNome());
		//ClienteFormBO.getInstance().setClienteForm(cliente);
	
		//janela.preencheFormulario(cliente);
		
	}
	
	public boolean isNumero(String numero) {
		long valor;
		if (numero.length() != 0){
		
			try {
				valor = Long.parseLong(numero);
			}catch(NumberFormatException ex){
				
				return false;
			}
		}
		return true;
	}
	


	public boolean excluiCliente(Cliente cliente) {
		// TODO Auto-generated method stub
		return true;
	}

	
}
